package main.java.tipos;

import main.java.factorias.*;
import java.util.*;

import main.java.factorias.Cadenas;
import main.java.factorias.Expresion;

public class CartaAliados extends CartaImpl{
	
	private static Expresion<String, CartaAliados> expresion = new StringACartaAliada();

	public CartaAliados(int fuerza,String nombre) {
		super(fuerza,nombre);
	}
	
	public CartaAliados(String s){
		super();
		int fuerza=0;
		String nombre="";
		
		List<String> lista = Cadenas.separaElementos(s, ",");
		
		if(lista.size() != 2) {
			throw new IllegalArgumentException("Error en el número de parámetros");
		}
		
		nombre = lista.get(0);
		fuerza = Integer.parseInt(lista.get(1));
		this.setFuerza(fuerza);
		this.setNombre(nombre);
	}
	
	

	public static Expresion<String, CartaAliados> getExpresion() {
		return expresion;
	}

	@Override
	public String toString() {
		return super.toString();
	}
	
	private static class StringACartaAliada implements Expresion<String, CartaAliados> {
		
		/**
		 * Constructor.
		 */
		public StringACartaAliada() {
		}

		/**
		 * @see Function#apply(Object)
		 */
		public CartaAliados exp(String s) {
			return new CartaAliados(s);
		}
	}
	
	
}
